home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1994 February: Tool Chest / Dev.CD Feb 94.toast / Tool Chest / Development Platforms / MPW Related / MPW Interfaces / CIncludes / TextUtils.h < prev    next >
Encoding:
C/C++ Source or Header  |  1993-09-17  |  15.1 KB  |  412 lines  |  [TEXT/MPS ]

  1. /*
  2.     File:        TextUtils.h
  3.  
  4.     Copyright:    © 1983-1993 by Apple Computer, Inc.
  5.                 All rights reserved.
  6.  
  7.     Version:    System 7.1 for ETO #11
  8.     Created:    Tuesday, March 30, 1993 18:00
  9.  
  10. */
  11.  
  12. #ifndef __TEXTUTILS__
  13. #define __TEXTUTILS__
  14.  
  15. #ifndef __TYPES__
  16. #include <Types.h>
  17. #endif
  18.  
  19. #ifndef __SCRIPT__
  20. #include <Script.h>
  21. #endif
  22.  
  23. #ifndef __OSUTILS__
  24. #include <OSUtils.h>
  25. #endif
  26.  
  27.  
  28. enum {
  29. // New constants for System 7.0:           <#9>            
  30.  
  31. /*  Constants for truncWhere argument in TruncString and TruncText */
  32.  truncEnd = 0,                        /* Truncate at end */
  33.  truncMiddle = 0x4000,            /* Truncate in middle */
  34.  smTruncEnd = 0,                    /* Truncate at end    obsolete */
  35.  smTruncMiddle = 0x4000,        /* Truncate in middle     obsolete */
  36.  
  37. /* Constants for TruncString and TruncText results */
  38.  notTruncated = 0,                /* No truncation was necessary */
  39.  truncated = 1,                    /* Truncation performed */
  40.  truncErr = -1,                    /* General error */
  41.  smNotTruncated = 0,                /* No truncation was necessary    obsolete */
  42.  smTruncated = 1,                    /* Truncation performed                obsolete */
  43.  smTruncErr = -1                    /* General error                        obsolete */
  44. };
  45.  
  46. enum {
  47.  fVNumber = 0,                        /*first version of NumFormatString*/
  48.  
  49. /* Special language code values for Language Order */
  50.  systemCurLang = -2,                /* current (itlbLang) lang for system script */
  51.  systemDefLang = -3,                /* default (table) lang for system script */
  52.  currentCurLang = -4,            /* current (itlbLang) lang for current script */
  53.  currentDefLang = -5,            /* default lang for current script */
  54.  scriptCurLang = -6,                /* current (itlbLang) lang for specified script */
  55.  scriptDefLang = -7                /* default language for a specified script */
  56. };
  57. enum {
  58.  iuSystemCurLang = -2,            /* <obsolete> current (itlbLang) lang for system script */
  59.  iuSystemDefLang = -3,            /* <obsolete> default (table) lang for system script */
  60.  iuCurrentCurLang = -4,            /* <obsolete> current (itlbLang) lang for current script */
  61.  iuCurrentDefLang = -5,            /* <obsolete> default lang for current script */
  62.  iuScriptCurLang = -6            /* <obsolete> current (itlbLang) lang for specified script */
  63. };
  64. enum {
  65.  iuScriptDefLang = -7            /* <obsolete> default language for a specified script */
  66. };
  67.  
  68.  
  69. enum {smBreakWord,smBreakChar,smBreakOverflow};
  70. typedef unsigned char StyledLineBreakCode;
  71.  
  72. enum {fPositive,fNegative,fZero};
  73. typedef unsigned char FormatClass;
  74.  
  75. enum {fFormatOK,fBestGuess,fOutOfSynch,fSpuriousChars,fMissingDelimiter,
  76.  fExtraDecimal,fMissingLiteral,fExtraExp,fFormatOverflow,fFormStrIsNAN,
  77.  fBadPartsTable,fExtraPercent,fExtraSeparator,fEmptyFormatString};
  78. typedef unsigned char FormatResultType;
  79.  
  80.  
  81. struct NumFormatString {
  82.  char fLength;
  83.  char fVersion;
  84.  char data[254];                    /*private data*/
  85. };
  86.  
  87. typedef struct NumFormatString NumFormatString;
  88. typedef struct NumFormatString NumFormatStringRec;
  89.  
  90. struct FVector {
  91.  short start;
  92.  short length;
  93. };
  94.  
  95. typedef struct FVector FVector;
  96.  
  97.  
  98. typedef FVector TripleInt[3];        /* index by [fPositive..fZero] */
  99.  
  100. struct ScriptRunStatus {
  101.  char script;
  102.  char variant;
  103. };
  104.  
  105. typedef struct ScriptRunStatus ScriptRunStatus;
  106.  
  107.  
  108. /* New types for System 7.0:                
  109.  
  110.   type for truncWhere parameter in new TruncString, TruncText */
  111. typedef short TruncCode;
  112.  
  113.  
  114. enum {shortDate,longDate,abbrevDate};
  115. typedef unsigned char DateForm;
  116.  
  117. enum {
  118. /* String2Date status values */
  119.  fatalDateTime = 0x8000,            /*String2Date and String2Time mask to a fatal error*/
  120.  longDateFound = 1,                    /*String2Date mask to long date found*/
  121.  leftOverChars = 2,                    /*String2Date & Time mask to warn of left over characters*/
  122.  sepNotIntlSep = 4,                    /*String2Date & Time mask to warn of non-standard separators*/
  123.  fieldOrderNotIntl = 8,                /*String2Date & Time mask to warn of non-standard field order*/
  124.  extraneousStrings = 16,            /*String2Date & Time mask to warn of unparsable strings in text*/
  125.  tooManySeps = 32,                    /*String2Date & Time mask to warn of too many separators*/
  126.  sepNotConsistent = 64,                /*String2Date & Time mask to warn of inconsistent separators*/
  127.  tokenErr = 0x8100,                    /*String2Date & Time mask for 'tokenizer err encountered'*/
  128.  cantReadUtilities = 0x8200,
  129.  dateTimeNotFound = 0x8400,
  130.  dateTimeInvalid = 0x8800
  131.  
  132. };
  133.  
  134.  
  135.  
  136. typedef short StringToDateStatus;
  137. typedef short String2DateStatus;
  138.  
  139. struct DateCacheRecord {
  140.  short hidden[256];                    /*only for temporary use*/
  141. };
  142.  
  143. typedef struct DateCacheRecord DateCacheRecord;
  144. typedef DateCacheRecord *DateCachePtr;
  145.  
  146.  
  147. struct BreakTable {
  148.  char charTypes[256];
  149.  short tripleLength;
  150.  short triples[1];
  151. };
  152.  
  153. typedef struct BreakTable BreakTable;
  154. typedef BreakTable *BreakTablePtr;
  155.  
  156. /* New NBreakTable for System 7.0: */
  157. struct NBreakTable {
  158.  signed char flags1;
  159.  signed char flags2;
  160.  short version;
  161.  short classTableOff;
  162.  short auxCTableOff;
  163.  short backwdTableOff;
  164.  short forwdTableOff;
  165.  short doBackup;
  166.  short reserved;
  167.  char charTypes[256];
  168.  short tables[1];
  169. };
  170.  
  171. typedef struct NBreakTable NBreakTable;
  172. typedef NBreakTable *NBreakTablePtr;
  173.  
  174.  
  175.  
  176. #ifdef __cplusplus
  177. extern "C" {
  178. #endif
  179.  
  180.  
  181. pascal void IUDateString(long dateTime,DateForm longFlag,Str255 result)
  182.  = {0x4267,0xA9ED}; 
  183. void iudatestring(long dateTime,DateForm longFlag,char *result); 
  184. pascal void DateString(long dateTime,DateForm longFlag,Str255 result,
  185.  Handle intlHandle)
  186.  = {0x3F3C,0x000E,0xA9ED}; 
  187. void datestring(long dateTime,DateForm longFlag,char *result,Handle intlHandle); 
  188. pascal void IUDatePString(long dateTime,DateForm longFlag,Str255 result,
  189.  Handle intlHandle)
  190.  = {0x3F3C,0x000E,0xA9ED}; 
  191. void iudatepstring(long dateTime,DateForm longFlag,char *result,Handle intlHandle); 
  192. pascal void IUTimeString(long dateTime,Boolean wantSeconds,Str255 result)
  193.  = {0x3F3C,0x0002,0xA9ED}; 
  194. void iutimestring(long dateTime,Boolean wantSeconds,char *result); 
  195. pascal void TimeString(long dateTime,Boolean wantSeconds,Str255 result,
  196.  Handle intlHandle)
  197.  = {0x3F3C,0x0010,0xA9ED}; 
  198. void timestring(long dateTime,Boolean wantSeconds,char *result,Handle intlHandle); 
  199. pascal void IUTimePString(long dateTime,Boolean wantSeconds,Str255 result,
  200.  Handle intlHandle)
  201.  = {0x3F3C,0x0010,0xA9ED}; 
  202. void iutimepstring(long dateTime,Boolean wantSeconds,char *result,Handle intlHandle); 
  203.  
  204. pascal void LongDateString(LongDateTime *dateTime,DateForm longFlag,Str255 result,
  205.  Handle intlHandle)
  206.  = {0x3F3C,0x0014,0xA9ED}; 
  207. void longdatestring(LongDateTime *dateTime,DateForm longFlag,char *result,
  208.  Handle intlHandle); 
  209. pascal void IULDateString(LongDateTime *dateTime,DateForm longFlag,Str255 result,
  210.  Handle intlHandle)
  211.  = {0x3F3C,0x0014,0xA9ED}; 
  212. void iuldatestring(LongDateTime *dateTime,DateForm longFlag,char *result,
  213.  Handle intlHandle); 
  214. pascal void LongTimeString(LongDateTime *dateTime,Boolean wantSeconds,Str255 result,
  215.  Handle intlHandle)
  216.  = {0x3F3C,0x0016,0xA9ED}; 
  217. void longtimestring(LongDateTime *dateTime,Boolean wantSeconds,char *result,
  218.  Handle intlHandle); 
  219. pascal void IULTimeString(LongDateTime *dateTime,Boolean wantSeconds,Str255 result,
  220.  Handle intlHandle)
  221.  = {0x3F3C,0x0016,0xA9ED}; 
  222. void iultimestring(LongDateTime *dateTime,Boolean wantSeconds,char *result,
  223.  Handle intlHandle); 
  224.  
  225. pascal OSErr InitDateCache(DateCachePtr theCache)
  226.  = {0x2F3C,0x8204,0xFFF8,0xA8B5}; 
  227. pascal StringToDateStatus StringToDate(Ptr textPtr,long textLen,DateCachePtr theCache,
  228.  long *lengthUsed,LongDateRec *dateTime)
  229.  = {0x2F3C,0x8214,0xFFF6,0xA8B5}; 
  230. pascal String2DateStatus String2Date(Ptr textPtr,long textLen,DateCachePtr theCache,
  231.  long *lengthUsed,LongDateRec *dateTime)
  232.  = {0x2F3C,0x8214,0xFFF6,0xA8B5}; 
  233. pascal StringToDateStatus StringToTime(Ptr textPtr,long textLen,DateCachePtr theCache,
  234.  long *lengthUsed,LongDateRec *dateTime)
  235.  = {0x2F3C,0x8214,0xFFF4,0xA8B5}; 
  236. pascal String2DateStatus String2Time(Ptr textPtr,long textLen,DateCachePtr theCache,
  237.  long *lengthUsed,LongDateRec *dateTime)
  238.  = {0x2F3C,0x8214,0xFFF4,0xA8B5}; 
  239.  
  240. pascal Boolean EqualString(ConstStr255Param str1,ConstStr255Param str2,
  241.  Boolean caseSens,Boolean diacSens); 
  242. Boolean equalstring(char *str1,char *str2,Boolean caseSens,Boolean diacSens); 
  243. pascal void UpperString(Str255 theString,Boolean diacSens); 
  244. void upperstring(char *theString,Boolean diacSens); 
  245. pascal void UprString(Str255 theString,Boolean diacSens); 
  246. void uprstring(char *theString,Boolean diacSens); 
  247. pascal short RelString(ConstStr255Param str1,ConstStr255Param str2,Boolean caseSens,
  248.  Boolean diacSens); 
  249. short relstring(char *str1,char *str2,Boolean caseSens,Boolean diacSens); 
  250.  
  251. pascal StringHandle GetString(short stringID)
  252.  = 0xA9BA; 
  253. pascal long Munger(Handle h,long offset,const void *ptr1,long len1,const void *ptr2,
  254.  long len2)
  255.  = 0xA9E0; 
  256. pascal void SetString(StringHandle theString,ConstStr255Param strNew)
  257.  = 0xA907; 
  258. void setstring(StringHandle theString,char *strNew); 
  259. pascal StringHandle NewString(ConstStr255Param theString)
  260.  = 0xA906; 
  261. StringHandle newstring(char *theString); 
  262. pascal void GetIndString(Str255 theString,short strListID,short index); 
  263. void getindstring(char *theString,short strListID,short index); 
  264.  
  265. /* following four will be obsolete. Use equivalent PString call and pass a NIL handle */
  266.  
  267. pascal short IUMagString(const void *aPtr,const void *bPtr,short aLen,short bLen)
  268.  = {0x3F3C,0x000A,0xA9ED}; 
  269. pascal short IUMagIDString(const void *aPtr,const void *bPtr,short aLen,
  270.  short bLen)
  271.  = {0x3F3C,0x000C,0xA9ED}; 
  272. pascal short IUCompString(ConstStr255Param aStr,ConstStr255Param bStr); 
  273. short iucompstring(char *aStr,char *bStr); 
  274. pascal short IUEqualString(ConstStr255Param aStr,ConstStr255Param bStr); 
  275. short iuequalstring(char *aStr,char *bStr); 
  276.  
  277. pascal void StringToNum(ConstStr255Param theString,long *theNum); 
  278. void stringtonum(char *theString,long *theNum); 
  279. pascal void NumToString(long theNum,Str255 theString); 
  280. void numtostring(long theNum,char *theString); 
  281.  
  282. pascal short CompareText(const void *aPtr,const void *bPtr,short aLen,
  283.  short bLen,Handle itl2Handle)
  284.  = {0x3F3C,0x001A,0xA9ED}; 
  285. pascal short IUMagPString(const void *aPtr,const void *bPtr,short aLen,
  286.  short bLen,Handle itl2Handle)
  287.  = {0x3F3C,0x001A,0xA9ED}; 
  288. pascal short IdenticalText(const void *aPtr,const void *bPtr,short aLen,
  289.  short bLen,Handle itl2Handle)
  290.  = {0x3F3C,0x001C,0xA9ED}; 
  291. pascal short IUMagIDPString(const void *aPtr,const void *bPtr,short aLen,
  292.  short bLen,Handle itl2Handle)
  293.  = {0x3F3C,0x001C,0xA9ED}; 
  294. pascal short CompareString(ConstStr255Param aStr,ConstStr255Param bStr,
  295.  Handle itl2Handle); 
  296. short comparestring(char *aStr,char *bStr,Handle intlHandle); 
  297. pascal short IUCompPString(ConstStr255Param aStr,ConstStr255Param bStr,
  298.  Handle itl2Handle); 
  299. short iucomppstring(char *aStr,char *bStr,Handle intlHandle); 
  300. pascal short IdenticalString(ConstStr255Param aStr,ConstStr255Param bStr,
  301.  Handle itl2Handle); 
  302. short identicalstring(char *aStr,char *bStr,Handle intlHandle); 
  303. pascal short IUEqualPString(ConstStr255Param aStr,ConstStr255Param bStr,
  304.  Handle itl2Handle); 
  305. short iuequalpstring(char *aStr,char *bStr,Handle intlHandle); 
  306. pascal short ScriptOrder(ScriptCode script1,ScriptCode script2)
  307.  = {0x3F3C,0x001E,0xA9ED}; 
  308. pascal short IUScriptOrder(ScriptCode script1,ScriptCode script2)
  309.  = {0x3F3C,0x001E,0xA9ED}; 
  310. pascal short LanguageOrder(LangCode language1,LangCode language2)
  311.  = {0x3F3C,0x0020,0xA9ED}; 
  312. pascal short IULangOrder(LangCode language1,LangCode language2)
  313.  = {0x3F3C,0x0020,0xA9ED}; 
  314. pascal short TextOrder(const void *aPtr,const void *bPtr,short aLen,short bLen,
  315.  ScriptCode aScript,ScriptCode bScript,LangCode aLang,LangCode bLang)
  316.  = {0x3F3C,0x0022,0xA9ED}; 
  317. pascal short IUTextOrder(const void *aPtr,const void *bPtr,short aLen,short bLen,
  318.  ScriptCode aScript,ScriptCode bScript,LangCode aLang,LangCode bLang)
  319.  = {0x3F3C,0x0022,0xA9ED}; 
  320. pascal short StringOrder(ConstStr255Param aStr,ConstStr255Param bStr,
  321.  ScriptCode aScript,ScriptCode bScript,LangCode aLang,LangCode bLang); 
  322. pascal short IUStringOrder(ConstStr255Param aStr,ConstStr255Param bStr,
  323.  ScriptCode aScript,ScriptCode bScript,LangCode aLang,LangCode bLang); 
  324. short iustringorder(char *aStr,char *bStr,ScriptCode aScript,ScriptCode bScript,
  325.  LangCode aLang,LangCode bLang); 
  326.  
  327. pascal void FindWord(Ptr textPtr,short textLength,short offset,Boolean leadingEdge,
  328.  BreakTablePtr breaks,OffsetTable offsets)
  329.  = {0x2F3C,0x8012,0x001A,0xA8B5}; 
  330.  
  331. pascal void FindWordBreaks(Ptr textPtr,short textLength,short offset,Boolean leadingEdge,
  332.  BreakTablePtr breaks,OffsetTable offsets,ScriptCode script)                        
  333.  = {0x2F3C,0xC012,0x001A,0xA8B5}; 
  334.  
  335. pascal void UprText(Ptr textPtr,short len)
  336.  = {0x301F,0x205F,0xA054}; 
  337. pascal void LwrText(Ptr textPtr,short len)
  338.  = {0x301F,0x205F,0xA056}; 
  339.  
  340. /*  New for 7.0  */
  341. pascal void LowerText(Ptr textPtr,short len)
  342.  = {0x301F,0x205F,0xA056}; 
  343. pascal void StripText(Ptr textPtr,short len)
  344.  = {0x301F,0x205F,0xA256}; 
  345. pascal void UpperText(Ptr textPtr,short len)
  346.  = {0x301F,0x205F,0xA456}; 
  347. pascal void StripUpperText(Ptr textPtr,short len)
  348.  = {0x301F,0x205F,0xA656}; 
  349.  
  350. pascal StyledLineBreakCode StyledLineBreak(Ptr textPtr,long textLen,long textStart,
  351.  long textEnd,long flags,Fixed *textWidth,long *textOffset)
  352.  = {0x2F3C,0x821C,0xFFFE,0xA8B5}; 
  353.  
  354. pascal FormatStatus StringToFormatRec(ConstStr255Param inString,const NumberParts *partsTable,
  355.  NumFormatString *outString)
  356.  = {0x2F3C,0x820C,0xFFEC,0xA8B5}; 
  357. pascal FormatStatus Str2Format(ConstStr255Param inString,const NumberParts *partsTable,
  358.  NumFormatString *outString)
  359.  = {0x2F3C,0x820C,0xFFEC,0xA8B5}; 
  360. pascal FormatStatus FormatRecToString(const NumFormatString *myCanonical,const NumberParts *partsTable,
  361.  Str255 outString,TripleInt positions)
  362.  = {0x2F3C,0x8210,0xFFEA,0xA8B5}; 
  363. pascal FormatStatus Format2Str(const NumFormatString *myCanonical,const NumberParts *partsTable,
  364.  Str255 outString,TripleInt positions)
  365.  = {0x2F3C,0x8210,0xFFEA,0xA8B5}; 
  366. pascal FormatStatus ExtendedToString(extended80 x,const NumFormatString *myCanonical,
  367.  const NumberParts *partsTable,Str255 outString)
  368.  = {0x2F3C,0x8210,0xFFE8,0xA8B5}; 
  369. pascal FormatStatus FormatX2Str(extended80 x,const NumFormatString *myCanonical,
  370.  const NumberParts *partsTable,Str255 outString)
  371.  = {0x2F3C,0x8210,0xFFE8,0xA8B5}; 
  372. pascal FormatStatus StringToExtended(ConstStr255Param source,const NumFormatString *myCanonical,
  373.  const NumberParts *partsTable,extended80 *x)
  374.  = {0x2F3C,0x8210,0xFFE6,0xA8B5}; 
  375. pascal FormatStatus FormatStr2X(ConstStr255Param source,const NumFormatString *myCanonical,
  376.  const NumberParts *partsTable,extended80 *x)
  377.  = {0x2F3C,0x8210,0xFFE6,0xA8B5}; 
  378.  
  379. pascal ScriptRunStatus FindScriptRun(Ptr textPtr,long textLen,long *lenUsed)
  380.  = {0x2F3C,0x820C,0x0026,0xA8B5}; 
  381.  
  382. pascal void NFindWord(Ptr textPtr,short textLength,short offset,Boolean leadingEdge,
  383.  NBreakTablePtr nbreaks,OffsetTable offsets)
  384.  = {0x2F3C,0x8012,0xFFE2,0xA8B5}; 
  385. pascal short TruncString(short width,Str255 theString,TruncCode truncWhere)
  386.  = {0x2F3C,0x8208,0xFFE0,0xA8B5}; 
  387. pascal short TruncText(short width,Ptr textPtr,short *length,TruncCode truncWhere)
  388.  = {0x2F3C,0x820C,0xFFDE,0xA8B5}; 
  389. pascal short ReplaceText(Handle baseText,Handle substitutionText,Str15 key)
  390.  = {0x2F3C,0x820C,0xFFDC,0xA8B5}; 
  391.  
  392.  
  393. pascal void LowercaseText(Ptr textPtr,short len,ScriptCode script)                    /*<60>*/
  394.     = {0x3F3C,0x0000,0x2F3C,0x800A,0xFFB6,0xA8B5};
  395.  
  396. pascal void StripDiacritics(Ptr textPtr,short len,ScriptCode script)                    /*<60>*/
  397.     = {0x3F3C,0x0200,0x2F3C,0x800A,0xFFB6,0xA8B5};
  398.  
  399. pascal void UppercaseText(Ptr textPtr,short len,ScriptCode script)                    /*<60>*/
  400.     = {0x3F3C,0x0400,0x2F3C,0x800A,0xFFB6,0xA8B5};
  401.  
  402. pascal void UppercaseStripDiacritics(Ptr textPtr,short len,ScriptCode script)                /*<60>*/
  403.     = {0x3F3C,0x0600,0x2F3C,0x800A,0xFFB6,0xA8B5};
  404.  
  405.  
  406.  
  407. #ifdef __cplusplus
  408. }
  409. #endif
  410.  
  411. #endif
  412.